Cloud One Application Security(Preview)をWebサーバのPHPに組み込んでみた
こんにちは、コンサル部@大阪オフィスのTodaです。
トレンドマイクロ社が提供しているCloud One Application Security(Preview)を試す機会がありましたのでWebサーバのPHPに導入をして監視するように設定してみました。
Cloud One Application Securityの詳細は下記記事をご確認ください下さい。
前提条件
- 現在(2020/09/24時点)はPreview版であり、今後変更される予定があるため、ご注意ください。
- Cloud One トライアル版アカウント登録し、30日無償にてトライアルで簡単にテストしています。
- EC2はLAMP環境が整っている状態から利用しています。
PHPのプログラムについて
検証用としてLaravelを利用しています。
LaravelはPHPで作られたオープンソースのフレームワークで、MITライセンスの下でリリースされており誰でも利用する事が可能です。
今回はその中でLTS(Long Term Support) の対象になっているバージョン6を使っています。
https://readouble.com/laravel/6.x/ja/
監視の導入
監視用のプログラムはPHP拡張モジュールとして導入を行います。
下記手順で導入をしております。
Cloud Oneにグループの追加
管理画面にログインをしてApplication Securityを選択、CREATE NEW GROUPボタンを押して新しいグループを追加します。
KeyとSecretを取得
グループの登録が完了するとKeyとSecretが表示されます。
上記はモジュールのインストール時に必要な情報となります。
モジュールダウンロード
Cloud Oneのサイトから監視用のモジュールを取得します。
対応言語はPython, NodeJS, Java, PHPの4種類があります。
※現在サポートOSはLinuxのみとなります。
https://cloudone.trendmicro.com/docs/application-security/downloads/
PHPはバージョンにより取得するファイルが変わりますのでバージョン確認をおこないファイルを決定します。
php -v PHP 7.4.9 (cli) (built: Aug 21 2020 21:45:11) ( NTS ) Copyright (c) The PHP Group Zend Engine v3.4.0, Copyright (c) Zend Technologies with Zend OPcache v7.4.9, Copyright (c), by Zend Technologies
今回はPHP7.4が入っているため一覧から対象の.soファイルを選択、ダウンロードします。
※wgetはファイルを取得するコマンドになります。
sudo wget https://files.trendmicro.com/products/CloudOne/ApplicationSecurity/1.0.2/agent-php/trend_app_protect-x86_64-Linux-gnu-4.1.9-20190902.so
モジュールを格納
ダウンロードしたファイルをPHPのモジュールが格納されているフォルダに移動します。
私の環境では /usr/lib64/php/modules に移動されます。
sudo mv ./trend_app_protect-*.so "$(php -r 'echo ini_get ("extension_dir");')"/trend_app_protect.so
モジュールの読み込み設定
PHPでモジュールが呼び出しできるように設定を追加します。
記載内容の中にあるKeyとSecretはグループ作成時に取得した物を利用します。
sudo vi /etc/php.d/50-trend_protect.ini ; Enable the extension extension = trend_app_protect.so ; Add key and secret from the Application Protection dashboard trend_app_protect.key = [サイトで取得したKey] trend_app_protect.secret = [サイトで取得したSecret]
Webサーバを再起動
PHPの設定を反映するためWebサーバを再起動します。
sudo systemctl restart httpd
導入確認
再起動をおこなった後に phpinfo を使ってモジュールの状態を確認します。
trend_app_protect の表記があれば正常に導入ができております。
合わせて監視対象のサイトにアクセスした後に管理画面に表示されているリクエストのグラフが上がっているかを確認します。
オープンリダイレクトの判定を試してみる
オープンリダイレクトとは利用しているサイトから別ドメインのサイトに自動で移動する仕組みです。
運営者が想定している移動の場合は良いのですが、意図しない移動があった場合に通知・ブロックする事ができます。
オープンリダイレクトの設定確認
作成したフィルタグループのオープンリダイレクト設定を確認します。
初期状態では全てのリダイレクトが対象となっています。
意図的にオープンリダイレクト設定
Laravelに別ドメインへのリダイレクトを意図的に設定します。
下記の設定を入れることで /openredirect を指定する事で別ドメインにリダイレクトされます。
vi /routes/web.php // 下記を最終行に追加 Route::redirect('/openredirect', 'https://[別ドメイン]/', 302);
ブラウザでURLにアクセス
アクセスをするとCloud One画面上でOpen Redirectのログが表示されました。
このときリダイレクトはブロックされず移動します。
詳細を確認することでアクセス元IPや移動先などを把握できます。
オープンリダイレクトをブロックする
ブロックに設定変更
オープンリダイレクトの設定をREPORTからMITIGATEに変更します。
ブラウザでURLにアクセス
先ほどと違いリダイレクトは行われずエラー画面が表示されるようになりました。
Cloud One画面上では移動をしていないためプライオリティがmediumの状態で表示されています。
オープンリダイレクトを一部許可する
ポリシー設定に移動
オープンリダイレクトのポリシー設定画面に移動します。
ルールの追加
URLの判定ルールに新しいルールを追加します。右上の+ボタンをクリックします。
ルールの設定
対象のURLを追加します。指定には*でワイルドカードの指定ができます。
ルールの反映
上記登録をすると一覧に追加されます。
一覧は上部のルールが優先して反映されます。順番を調整して保存をします。
実際にアクセス
上記手持ちのドメインで試したところ正常にリダイレクトができました。
「*://example.com*」の指定の場合、HTTPまたはHTTPSでexample.comドメインのURLはリダイレクトが許可されるようになります。
さいごに
Cloud OneのApplication Securityに関して試してみました。
利用してみた感想ですがソフトウェアのUIがシンプルでマニュアルなしでも簡単に操作できた点が個人的にグットでした。
ログの一覧は見やすいのですが、1件ずつチェックをする場合にどこまで見たか把握しにくい点がございました。
チェックボックスで簡易なマークをつけられて、検索条件で絞れたらログの把握がしやすいように思いました。
今回はオープンリダイレクトのみ試してみましたが、他にもIPプロテクション、ファイルアップロード、リモートコマンドなど監視項目がサポートされています。
上記は試して別記事でご案内させていただきたいと思います。